package com.pray.common.exception;

/**
 * 错误码和错误信息定义类
 * 1. 错误码定义规则为5为数字
 * 2. 前两位表示业务场景，最后三位表示错误码。例如：100001。10:通用 001:系统未知异常
 * 3. 维护错误码后需要维护错误描述，将他们定义为枚举形式
 * 错误码列表：
 * 10: 通用
 * 001：参数格式校验
 * 002：短信验证码获取频率太高
 * 11: 商品
 * 12: 订单
 * 13: 购物车
 * 14: 物流
 * 15：用户
 * 21：库存
 *
 * @author 魂悸魄
 * @date 2020/9/3 21:20
 */
public enum BizCodeEnum {
    /**
     * 未知异常
     */
    UNKNOWN_EXCEPTION(10000, "系统未知异常"),
    /**
     * 参数校验失败异常
     */
    VALID_EXCEPTION(10001, "参数格式校验失败"),
    /**
     * 参数校验失败异常
     */
    SMS_CODE_EXCEPTION(10002, "验证码获取频率太高，稍后再试"),
    /**
     * 商品上架异常
     */
    PRODUCT_UP_EXCEPTION(11000, "商品上架异常"),
    /**
     * 用户已经存在
     */
    USER_EXISTS_EXCEPTION(15001, "用户已经存在"),
    /**
     * 手机号已经存在
     */
    PHONE_EXISTS_EXCEPTION(15002, "手机号已经存在"),
    /**
     * 商品上架异常
     */
    ACCOUNT_PASSWORD_EXCEPTION(15003, "账号密码错误"),
    /**
     * 手机号已经存在
     */
    NO_STOCK_EXCEPTION(21000, "商品库存不足");


    /**
     * 状态码
     */
    private final Integer code;
    /**
     * 消息
     */
    private final String msg;

    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    BizCodeEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}
